#include<bits/stdc++.h>
using namespace std;
int i,j,n,m,x,y,ans,f[1010];
struct node{int x,y,l,r;}a[3030];
bool cmp(node x,node y){return x.r>y.r;}
int find(int x){return (f[x]==x)?x:f[x]=find(f[x]);}
int main(){
scanf("%d %d",&n,&m);
for (i=1;i<=m;i++) scanf("%d %d %d %d",&a[i].x,&a[i].y,&a[i].l,&a[i].r);
sort(a+1,a+1+m,cmp);
for (i=1;i<=m;i++){
for (j=1;j<=n;j++) f[j]=j;
for (j=1;j<=m;j++)
if (a[i].l>=a[j].l&&a[i].l<=a[j].r){
x=find(a[j].x);y=find(a[j].y);
if (x!=y) f[x]=y;
if (find(1)==find(n)) {ans=max(ans,a[j].r-a[i].l+1);break;}
}
}
if (!ans) printf("Nice work, Dima!\n");
else printf("%d\n",ans);
return 0;
}
1426C - Increase and Copy | 520C - DNA Alignment |
767A - Snacktower | 1365A - Matrix Game |
714B - Filya and Homework | 31A - Worms Evolution |
1691A - Beat The Odds | 433B - Kuriyama Mirai's Stones |
892A - Greed | 32A - Reconnaissance |
1236D - Alice and the Doll | 1207B - Square Filling |
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |
1244C - The Football Season | 1696B - NIT Destroys the Universe |
1674A - Number Transformation | 1244E - Minimizing Difference |
1688A - Cirno's Perfect Bitmasks Classroom | 219A - k-String |
952A - Quirky Quantifiers | 451B - Sort the Array |
1505H - L BREAK into program | 171E - MYSTERIOUS LANGUAGE |
630D - Hexagons | 1690D - Black and White Stripe |